This invention relates to computer applications with color processing capabilities. Computer applications with color processing capabilities, such as Illustrator(copyright), Photoshop(copyright), or Acrobat(copyright), all available from Adobe Systems Incorporated of San Jose, Calif., use different types of Color Management Systems (CMS""s). A CMS is a collection of software tools designed to accurately represent the colors in an image regardless of whether the image is viewed in different applications, viewed on different monitors, or printed on different color printers.
The software tool in a CMS that is responsible for performing the color conversion calculations from one device""s color space to another device""s color space is called a color processing module, and one example of such a module is a color management module (CMM). Many different types of CMMs exist and manufacturers that produce commonly used CMMs include Heidelberg, Kodak, Agfa, Apple, Adobe. Each CMM converts colors according to the preferences of its manufacturer.
Many users of computer applications with color processing capabilities are not concerned about which CMM an application uses, but to advanced users it can be very important to know. For example, when an animated movie is made by a number of different subcontractors that are each responsible for a different scene in the movie, it is important that all the subcontractors use the same CMM. If the different subcontractors use different CMMs, the colors of objects may change between the different scenes created by the different subcontractors in the final movie, resulting in an aesthetically unpleasing final cut.
Unfortunately applications do not always indicate which CMM they use. When a user selects a preferred CMM, some applications use the selected CMM only for some color conversions, but not for all color conversions. Consequently, a user of the application has no ability to determine which CMM is used. Advanced users, need a method for verifying that the application really uses the selected CMM for all of its color conversions.
In general, in a first aspect, the invention provides methods and apparatus, including computer program products, for generating color processing module fingerprints. A set of input colors represented in an input color space is generated. Sets of output colors represented in an output color space are generated, wherein each set of output colors is generated by transforming the set of input colors using a respective one of a plurality of color processing modules. A new color is iteratively added the set of input colors and the plurality of sets of output colors is regenerated when each set of output colors does not uniquely identify its corresponding color processing module. Each set of output colors is identified as a color processing module fingerprint when each set of output colors uniquely identifies its corresponding color processing module.
Advantageous implementations can include one or more of the following features. The initial set of input colors may be a null set. The initial set of input colors can be a random set of colors sampling the input color space. The set of input colors used to generate the plurality of sets of color processing fingerprints is referred to as a fingerprint generating set. The fingerprint generating set can comprise the smallest set of input colors that can generate a color processing module fingerprint for each of the plurality of color processing modules. The fingerprint generating set may only comprise colors from the set of input colors that are not identically transformed by each of the plurality of color processing modules. The color processing modules can be color management modules.
In general, in a second aspect, the invention provides methods and apparatus, including computer program products, for identifying a computer application""s color processing module. A fingerprint generating set and a plurality of color processing module fingerprints are received. A test color set is generated by transforming the fingerprint generating set using the application""s color processing module and the application""s color processing module is identified by comparing the generated test color set with the plurality of color processing module fingerprints.
Advantageous implementations can include one or more of the following features. Identifying the application""s color processing module may comprise finding an exact match between the test color set and one of the color processing module fingerprints. Identifying the application""s color processing module may comprise finding a best match between the test color set and one of the color processing module fingerprints. Finding a best match between the test color set and one of the color processing module fingerprints can comprise finding a minimum Euclidean distance between the test color set and one of the color processing module fingerprints. Identifying the application""s color processing module may comprise determining whether each color in the test color set has a color value that lies within a predetermined tolerance from the color value of a corresponding color in one of the color processing module fingerprints. The predetermined tolerance is a single digital count on either side of the color value of the corresponding color in one of the color processing module fingerprints.
The invention can be implemented to realize one or more of the following advantages. The invention enables an end-user to determine what color processing module a computer application program uses. The color processing module can be an application, a color management module, color processing settings within an application, or a specific rendering intent.
The details of one or more embodiments of the invention are set forth in the accompanying drawings and the description below. Other features and advantages of the invention will be apparent from the description and drawings, and from the claims.